home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / fractal / kaos.lha / modellib / d4hammm_def.c < prev    next >
Encoding:
Text File  |  1990-01-16  |  2.0 KB  |  99 lines

  1.  
  2. int d4hammm_init()
  3. {
  4.     title_label = "D4 Nilpotent Hamiltonian --";
  5.  
  6.     mapping_on = 0;
  7.     inverse_on = 1;
  8.     fderiv_on = 0;
  9.     enable_polar = 1;
  10.     enable_period = 0;
  11.     
  12.     var_dim = 4;
  13.     param_dim = 2;
  14.     func_dim = 3;
  15.     (void) malloc_init();
  16.  
  17.     var_label[0] = "x";
  18.     var_label[1] = "y";
  19.     var_label[2] = "z";
  20.     var_label[3] = "w";
  21.     var_polar_label[0] = "r";
  22.     var_polar_label[1] = "rp";
  23.     var_polar_label[2] = "theta";
  24.     var_polar_label[3] = "thetap";
  25.     param_label[0] = "mu";
  26.     param_label[1] = "delta";
  27.     func_label[0] = "Energy";
  28.     func_label[1] = "AngMom";
  29.     func_label[2] = "t";
  30.  
  31.     param[0] = 2;
  32.     param[1] = 1;
  33.  
  34.     var_i[0] = 0;
  35.     var_i[1] = 0;
  36.     var_i[2] = 0;
  37.     var_i[3] = 0;
  38.     var_polar_i[0] = 0;
  39.     var_polar_i[1] = 0;
  40.     var_polar_i[2] = 0;
  41.     var_polar_i[3] = 0;
  42.  
  43.     param_min[0]= -5; param_max[0]= 5;
  44.     param_min[1]= -5; param_max[1]= 5;
  45.  
  46.     var_min[0]= -5; var_max[0]= 5;
  47.     var_min[1]= -5; var_max[1]= 5;
  48.     var_min[2]= -5; var_max[2]= 5;
  49.     var_min[3]= -5; var_max[3]= 5;
  50.  
  51.     var_polar_min[0]= -5; var_polar_max[0]= 5;
  52.     var_polar_min[1]= -5; var_polar_max[1]= 5;
  53.     var_polar_min[2]= -pi; var_polar_max[2]= pi;
  54.     var_polar_min[3]= -5; var_polar_max[3]= 5;
  55.  
  56.     func_min[0]= -1; func_max[0]= 1;
  57.     func_min[1]= -1; func_max[1]= 1;
  58.     func_min[2]= 0; func_max[2]= 10000;
  59.  
  60.     f_p = d4hammm_f;
  61.     func_p = d4hammm_func;
  62. }
  63. /* D4 Hamitonian */
  64. int d4hammm_f(f,index,x,p,t,dim)
  65. int index,dim;
  66. double f[],x[],p[],t;
  67. {
  68.     double v0sq,v2sq;
  69.  
  70.     /* Hamiltonian vector field: 0: dH/dy 2: dH/dw 1:-dH/dx 3:-dH/dz */
  71.     if(index !=2) {
  72.         f[0] = x[1];
  73.         f[2] = x[3];
  74.     }
  75.     if(index !=1){
  76.         v0sq = x[0] * x[0];
  77.         v2sq = x[2] * x[2];
  78.         f[1] = x[0] * (p[0] - (v0sq+v2sq)) + p[1] * x[0] * v2sq;
  79.         f[3] = x[2] *(p[0] - (v0sq+v2sq))+p[1]*x[2]*v0sq; 
  80.     }
  81.     
  82. }
  83. int d4hammm_func(f,x,p,t,dim)
  84. double f[],x[],p[],t;
  85. int dim;
  86. {
  87.         double v0sq,v1sq,v2sq,v3sq;
  88.  
  89.     /* energy and angular momentum are defined in euclidean
  90.     coordinates */
  91.     v0sq = x[0] * x[0];
  92.     v2sq = x[2] * x[2];
  93.     f[0] = 0.5 * ((x[1] * x[1] + x[3] * x[3]) - p[0]*(v0sq+v2sq) + 0.5 *
  94.     (v0sq+v2sq)*(v0sq+v2sq) - p[1] * v0sq* v2sq);
  95.     f[1] =  x[1] * x[2] - x[0] * x[3];
  96.     f[2] = t;
  97.     
  98. }
  99.